package com.ungs.bo.impl;

import java.util.ArrayList;
import java.util.List;

import com.ungs.bo.SolicitudCompraBO;
import com.ungs.dao.SolicitudCompraDAO;
import com.ungs.dao.impl.SolicitudCompraDAOImpl;
import com.ungs.entities.OrdenTrabajo;
import com.ungs.entities.SolicitudCompra;
import com.ungs.utils.Constantes;

public class SolicitudCompraBOImpl extends EntidadBOImpl<SolicitudCompra>
		implements SolicitudCompraBO {

	private SolicitudCompraDAO solicitudCompraDAO = new SolicitudCompraDAOImpl();

	@Override
	public SolicitudCompra getUltimaSolicitudCompra() {
		return solicitudCompraDAO.getUltimaSolicitudCompra();
	}

	@Override
	public List<SolicitudCompra> getSolicitudCompraSinFinalizar() {
		return solicitudCompraDAO.getSolicitudCompraSinFinalizar();
	}

	@Override
	public SolicitudCompra getSolicitudCompraByCodigo(String codigo) {
		return solicitudCompraDAO.getSolicitudCompraByCodigo(codigo);
	}

	@Override
	public Long getUltimoId() {
		Long idSolicitudCompra = null;
		SolicitudCompra solicitudCompra = solicitudCompraDAO
				.getUltimaSolicitudCompra();

		logger.info("Obteniendo el ultimo id de la SC");
		if (solicitudCompra != null) {
			idSolicitudCompra = solicitudCompra.getId();
		}

		return idSolicitudCompra;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<SolicitudCompra> getAllSolicitudCompra() {
		List<SolicitudCompra> solicitudCompraList = (List<SolicitudCompra>) getAll(SolicitudCompra.class);
		List<SolicitudCompra> solicitudCompraReturn = new ArrayList<SolicitudCompra>();

		logger.info("Obteniendo lista de solicitud compra con alta logica");
		for (SolicitudCompra solicitudCompra : solicitudCompraList) {
			if (solicitudCompra.getEstadoLogico().equals(Constantes.ALTA)) {
				solicitudCompraReturn.add(solicitudCompra);
			}
		}

		return solicitudCompraReturn;
	}

	@Override
	public void eliminarSolicitudCompra(SolicitudCompra solicitudCompra) {
		logger.info("Baja logica solicitudCompra: " + solicitudCompra.getId());
		solicitudCompra.setEstadoLogico(Constantes.BAJA);
		actualizar(solicitudCompra);

	}

	@Override
	public List<SolicitudCompra> getAllSolicitudCompraByOrdenTrabajo(
			OrdenTrabajo ordenTrabajo) {
		return solicitudCompraDAO
				.getAllSolicitudCompraByOrdenTrabajo(ordenTrabajo);
	}

}
